package com.learn.ack;

import com.learn.utils.RabbitMqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.MessageProperties;

import java.nio.charset.StandardCharsets;

/**
 * @author DJJ_F
 * @version 1.0
 * @date 2025/08/16
 * @description ch03 用来测试不平等发送 and 预取值
 */
public class Producer03 {
    public static final String QUEUE_NAME = "ack_queue";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMqUtils.getChannel();

        /*
        发布确认
         */
        channel.confirmSelect();

        /*
        创建队列
        1. queue – the name of the queue
        2. durable – true 持久化队列
        3. exclusive – true 独占队列，只对应一个连接or消费者
        4. autoDelete – true 最后一个消费者放开链接以后，该队列自动删除
        5. arguments – other properties (construction arguments) for the queue
         */
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);
         /*
        发送消息，参数列表：
        1. exchange – 交换机
        2. routingKey – 路由的key值是哪个本次是队列的名称
        3. props – 其他属性，如消息持久化
        4. body – the message body
        消息持久化的目的是目的是防止 broker 宕机导致未处理的消息丢失
         */
        for (int i = 0; i < 6; i++) {
            String message = "msg"+i;
            System.out.println(message);
            channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes(StandardCharsets.UTF_8));
        }
    }
}
